;***************************************************************************************
;* Ivestos eilutes mazasias raides pakeisti didziosiom ir atvirksciai (Nv2Fa -> nV2fA) *
;;* 2006-12-02                                                                          *
;***************************************************************************************

.MODEL small

.STACK 100h

.DATA
ivesk db 'Iveskite eilute: $'
isved db 10, 'Pakeista eilute: $'
string db 25 dup('$')

.CODE
start:
     mov ax, @data      
     mov ds, ax         
     lea dx, ivesk      ; gauname 'ivesk' adresa -> isspauzdinam jo reiksme
     mov ah, 09h
     int 21h
     mov si, 0          ; si naudosim indeksinei adresacija

skaitymas:
     mov ah, 01h        ; Skaitom po simboli is klaviaturos
     int 21h
     cmp al, 13         ; paziurim ar ne ENTER paspaudimas
     je isvedimas       ; jei taip persokam i isvedima 
     cmp al, 'a'        ; lyginam simbolio koda su 'a' kodu
     jb tikrinimas      ; jei simbolio kodas < 'a'koda, persokam i tikrinima, jei ne tesiam toliau
     cmp al, 'z'        ; lyginam simbolio koda su 'z' kodu
     ja tikrinimas      ; jei simbolio kodas > uz 'z' koda, persokam i tikrinima, jei ne tesiam toliau
     sub al, 20h        ; jei raide mazoji sumazine raides koda 20h gausime didziaja raide

istringa:
     mov string[si], al ; raso simboli i stringo SI-taja pazicija
     inc si             ; padidinam si registra
     cmp si, 24         ; paziurim ar neiseinam uz masyvo ribu
     je isvedimas       ; jei taip (si=24) persokam prie isvedimo
     jmp skaitymas      ; toliau skaitom is klaviaturos

tikrinimas:
     cmp al, 'A'        ; lyginam simbolio koda su 'A' kodu
     jb istringa        ; jei simbolio kodas < 'A'koda, persokam i istringa, jei ne tesiam toliau
     cmp al, 'Z'        ; lyginam simbolio koda su 'Z' kodu
     ja istringa
     add al, 20h        ; jei ivestas simbolis yra didzioji raide tada atimdami 20h gausime mazaja
     jmp istringa

isvedimas:
     lea dx, isved      
     mov ah, 09h        
     int 21h
     lea dx, string
     mov ah, 09h
     int 21h 
     mov ah, 0          ; palaukiam kol paspaus klavisa tada baigs darba
     int 16h

galas:
     mov ah, 4Ch      ; Gristam i OS
     int 21h
end start